#include "at32f403a_407.h"


volatile uint8_t input_status[3];//0-焊把 1-预留 2-预留
volatile uint32_t input_count[3];
volatile uint8_t input_changed[3];

volatile uint8_t enc_up;
volatile uint8_t enc_dn;
volatile uint8_t enc_key;
volatile uint32_t enc_count;

void gpio_irq_haldle(uint8_t pin)
{   
    if(pin == GPIO_PINS_3)
    {            
        if(gpio_input_data_bit_read(GPIOB, GPIO_PINS_3) == SET)
        {
            if(gpio_input_data_bit_read(GPIOB, GPIO_PINS_4) == SET)
            {
                enc_dn=1;
            }            
        }
    }
    
    if(pin == GPIO_PINS_4)
    {
        if(gpio_input_data_bit_read(GPIOB, GPIO_PINS_4) == SET)
        {
            if(gpio_input_data_bit_read(GPIOB, GPIO_PINS_3) == SET)
            {
                enc_up=1;
            }
        }
    }
    
    if(pin == GPIO_PINS_5)
    {
    }
}



void input_timer_callback(void)
{
    if(gpio_input_data_bit_read(GPIOC, GPIO_PINS_10)==RESET)
    {
        if(input_count[0] < 100)
        {
            input_count[0]++;            
        }
        else
        {
            if(input_status[0]==0)
            {
                input_changed[0] = 1;
            }
            input_status[0] = 1;
        }
    }
    else
    {
        if(input_status[0]==1)
        {
            input_changed[0] = 1;
        }
        input_status[0] = 0;
    }
    
    if(gpio_input_data_bit_read(GPIOC, GPIO_PINS_11)==RESET)
    {
        if(input_count[1] < 100)
        {
            input_count[1]++;            
        }
        else
        {
            if(input_status[1]==0)
            {
                input_changed[1] = 1;
            }
            input_status[1] = 1;
        }
    }
    else
    {
        if(input_status[1]==1)
        {
            input_changed[1] = 1;
        }
        input_status[1] = 0;
    }
    
    if(gpio_input_data_bit_read(GPIOC, GPIO_PINS_12)==RESET)
    {
        if(input_count[2] < 100)
        {
            input_count[2]++;            
        }
        else
        {
            if(input_status[2]==0)
            {
                input_changed[2] = 1;
            }
            input_status[2] = 1;
        }
    }
    else
    {
        if(input_status[2]==1)
        {
            input_changed[2] = 1;
        }
        input_status[2] = 0;
    }
    
    if(gpio_input_data_bit_read(GPIOB, GPIO_PINS_5) == RESET)
    {
        if(enc_count<100)
        {
            enc_count++;
            if(enc_count==100)
            {
                enc_key = 1;
            }
        }
    }
    else
    {
        enc_count = 0;
    }
}

